package com.lvfeng.tool;

import java.io.UnsupportedEncodingException;
import java.util.Random;

/**
 * 生成随机的工具类
 * LvLvFeng
 */
public class RandomTool {
    /**
     * 001.随机生成指定长度的字符串，可以用在图片验证码或者一些校验
     * @param textLength 随机生成的文本长度
     * @return String 随机生成的字符串
     */
    public static String randomText(int textLength){
        String ret="";
        for(int i=0;i<textLength;i++){
            String str = null;
            int hightPos, lowPos; // 定义高低位
            Random random = new Random();
            hightPos = (176 + Math.abs(random.nextInt(39))); //获取高位值
            lowPos = (161 + Math.abs(random.nextInt(93))); //获取低位值
            byte[] b = new byte[2];
            b[0] = (new Integer(hightPos).byteValue());
            b[1] = (new Integer(lowPos).byteValue());
            try {
                str = new String(b, "GBk"); //转成中文
            }
            catch (UnsupportedEncodingException ex) {
                ex.printStackTrace();
            }
            ret+=str;
        }
        return ret;
    }
    /**
     *  002.在指定区间内生成一个随机整数
     * @param max,min 随机整数区间
     * @return 随机整数
     */
    public static int randomInteger(int max,int min){
        Random rand = new Random();
        int randNumber =rand.nextInt(max - min + 1) + min;
        return randNumber;
    }

    /**
     *  003.随机生成大小写字母和数字混合的字符串
     * @param len 随机生成的长度
     * @return 生成的随机字符串
     */
    public static String randomMixString(int len){
        String val = "";
        Random random = new Random();
        for (int i = 0;i < len;i ++){
            String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
            if( "char".equalsIgnoreCase(charOrNum)){
                int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
                val += (char)(random.nextInt(26) + temp);
            }else if("num".equalsIgnoreCase(charOrNum)){
                val += String.valueOf(random.nextInt(10));
            }
        }
        return val;
    }
    /**
     *  004.随机生成字母
     * @param len 随机生成的长度
     * @param Aa  大小写(输入A则大写，a则小写)
     * @return  随机生成结果
     */
    public static String randomEnglishLetter(int len,String Aa){
        String str = "";
        for(int i = 0;i < len;i ++){
            str = str+ (char)(Math.random()*26+'A');
        }
        return str;
    }
}
